/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.vraptor.jpessoal.DAO;

import br.com.caelum.vraptor.ioc.Component;
import br.com.vraptor.jpessoal.bean.Nomeacao;
import br.com.vraptor.jpessoal.util.HibernateUtil;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Property;

/**
 *
 * @author rodrigogois
 */
@Component
public class NomeacaoDAO {

    public boolean salvar(Nomeacao nomeacao) {

        boolean retorno = true;
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        try {
            session.save(nomeacao);
            session.getTransaction().commit();

        } catch (Exception e) {
            session.getTransaction().rollback();
            System.out.println(e.getMessage());
            retorno = false;
        } finally {
            session.close();
        }
        return retorno;
    }

    public Nomeacao obterUltima(Integer codColaborador) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        Criteria crit = session.createCriteria(Nomeacao.class);
                 crit.add(Expression.eq("codColaborador", codColaborador));
                 crit.addOrder(Property.forName("id").desc());
                 crit.setMaxResults(1);
                 Nomeacao nomeacao = (Nomeacao) crit.uniqueResult();
                
                 return nomeacao;
       
    }

    public Nomeacao obterPorId(Integer id) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        Query query = session.createQuery("from Nomeacao where id = :id ");
        query.setParameter("id", id);
        Nomeacao nomeacao = (Nomeacao) query.uniqueResult();
        session.getTransaction().commit();

        return nomeacao;
    }

    public Date converterDataString(String dt) {
        try {
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
            Date date = (java.util.Date) formatter.parse(dt);
            return date;
        } catch (ParseException ex) {
            System.out.println(ex.getMessage());
        }

        return null;
    }

    public List<Nomeacao> obterLista(Integer id) {
       Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        Criteria crit = session.createCriteria(Nomeacao.class);
                 crit.add(Expression.eq("codColaborador", id));
                 crit.addOrder(Property.forName("dataNomeacao").desc());
                 List<Nomeacao> nomeacao = (List<Nomeacao>) crit.list();
                 return nomeacao;
    }

     public Nomeacao converterData(Nomeacao objnomeacao) {
        
        if(objnomeacao.getDataNomeacao()== null){
            objnomeacao.setDataNomeacao("00/00/0000");
            return objnomeacao;
        }
        
        String ano = objnomeacao.getDataNomeacao().substring(0, 4);
        String mes = objnomeacao.getDataNomeacao().substring(5, 7);
        String dia = objnomeacao.getDataNomeacao().substring(8, 10);
        objnomeacao.setDataNomeacao(dia+ "/" +mes +"/"+ano);
        return objnomeacao;
    }

}
